1. Field of the Invention
This invention relates to data processing systems and more particularly to an improved microprogram control unit.
2. Description of the Prior Art
In the early 1950's, M. V. Wilkes delivered at the Manchester University Computer Inaugural Conference, July, 1951, a paper entitled "The Best Way to Design an Automatic Calculating Machine", in which he proposed, on pages 16-18, a computer which would have a variable-instruction set. Normally a fixed set of instructions is available to the programmer, each one composed of a succession of elementary operations or micro-operations. The implementation of micro-operations constitutes the design of the variable-instruction machine. For each instruction, the micro-operation sequence (.mu.-op) is usually fixed in computer hardware design. What Wilkes proposed was a means by which a programmer could assemble .mu.-ops into any instruction the computer was inherently capable of executing. With microprogramming, a machine's instruction repertoire could be altered from day-to-day as its applications vary.
As a means for implementing a variable-instruction repertoire, the need for a memory to store the .mu.-op sequences was postulated, and Wilkes proposed the use of a diode matrix. In today's technology, we refer to this device as a read-only memory (ROM) or read-only store (ROS) or non-destructive read-out memory. The latter term is more appropriate since the variable instruction repertoire presupposes the ability to change the memory's contents; however, the former terms are in common usage, so we will use them interchangeably. In any event, we are referring to a memory which can be altered by a microprogrammer, but (usually) not by the machine, (i.e. the microwords are permanently recorded in the ROM by having each bit "burned in" by a shorting technique which connects ROM elements in a way desired by the microprogrammer).
The device that performs the .mu.-op sequencing in a computer is usually referred to as the microprogram control unit. In talking about the ROM system in the microprogram control unit, we will be referring to a plurality of rectangular memory arrays with a specific number of words in each rectangular memory, each work consisting of a predetermined number of bits. All bits of a word are read out together and they cumulatively specify a set of .mu.-ops to be executed either simultaneously or sequentially as specified by an external clock. Thereafter, another word is read out and executed in similar fashion and so on. Each word specifies a set of .mu.-ops; and a sequence of words specifies a sequence of sets of .mu.-ops. A set of words whose .mu.-ops define (or execute) some specified function is called a microprogram. In today's technology, a variety of devices are being used to create a ROM system; however, semi-conductor devices are fast replacing all other types.
In its most simple usage, each bit of a microword is used to generate one .mu.-op; hence, a bit position in the word will contain a one as the corresponding .mu.-op is desired in that word, otherwise it will be zero. These microwords are stored in the read-only memory system. An instruction read out of main memory initiates the first of a series of microwords to be read out of the ROM to cause the CPU of the computer system to execute the instruction read out from main memory.
These techniques are well known and described fully in a book entitled "Microprogramming: Principles and Practices", by Samir S. Husson, published in 1970 by Prentice-Hall Inc., of Englewood Cliffs, N.J. Additionally, several patents have issued on various features of microprogramming including a U.S. Pat. No. 3,736,567 issued on May 29, 1973 which features a technique wherein a predetermined bit in the last microword of a microprogram initiates a new program memory cycle and a new microprogram memory cycle.
Microprogram control units having read only memories are in extensive use today in most computer systems, some typical ones being the Honeywell Model 4200/8200, the Honeywell Series 60, the IBM 360 Series and the IBM 370 Series.
More recently, the microprogram control unit has been incorporated into minicomputers for controlling the execution of instructions. However, the minicomputer business is very competitive in terms of price and performance. Two primary demands compatible with the lowest cost have surfaced on the marketplace. One is to provide a greater "throughput capability", while another is to provide a broader capability for providing a broader spectrum of services to the user. These requirements translate into one broad general requirement -- maximum data handling capability with minimum hardware requirements. Accordingly, the computer designer is faced with the problem of reducing the ultimate cost of the computer system while at the same time increasing capabilities of the computer system. These requirements act in opposition to each other. Generally, additional features and capabilities require increased hardware which translates to increased cost; whereas reducing costs translates to a reduced number of features and capabilities by reducing hardware.
Although microprogram control units with ROM systems have been introduced into minicomputers for controlling the execution of instructions through the use of microprogramming and microinstructions, efforts are continuing in order to provide a more efficient system for executing instructions by conserving read only memory or steps in the execution of an instruction.
The Honeywell Series 60 -- Level 64 which is currently in production, uses a similar technique as described herein but requires additional cycles and microwords. In cycle 1, a microword "FOC" forces a constant on the data bus and another microword "WIS" writes the constant into scratchpad memory. In cycle 2, a microword "RES" reads the constant in scratchpad memory into the data bus and another microword "LSM" loads the constant from the bus into the MB register (microprogram base).
In cycle 3, another microprogram "BUN" (branch unconditionally), adds the constant in the MB register to the address register to form a 4096 word segment of which the constant is the first word.
This technique took three machine cycles and required four microwords to perform the branch.